package com.epam.tcs.dao.hibernate.impl;

import java.util.List;

import org.hibernate.Session;

import com.epam.tcs.dao.factory.JournalPracticeStatusDAO;
import com.epam.tcs.dao.hibernate.ConnectionFactory;
import com.epam.tcs.dao.hibernate.entities.JournalPracticeStatus;

;

public class JournalPracticeStatusDAOHibernateImpl extends
		ElementDAOHibernateImpl<JournalPracticeStatus> implements
		JournalPracticeStatusDAO {

	public JournalPracticeStatusDAOHibernateImpl(Class objType) {
		this.objType = objType;
	}

	@Override
	public JournalPracticeStatus getElement(long id) {
		Session session = ConnectionFactory.getOrInitSession();
		JournalPracticeStatus journalPracticeStatus = (JournalPracticeStatus) session
				.load(objType, id);

		journalPracticeStatus.getPractice();
		journalPracticeStatus.getPracticeStatus();
		journalPracticeStatus.getStudent();

		session.close();
		return journalPracticeStatus;
	}

	@Override
	public List<JournalPracticeStatus> getAllElements() {
		Session session = ConnectionFactory.getOrInitSession();
		List<JournalPracticeStatus> journalPracticeStatuses = (List<JournalPracticeStatus>) session
				.createQuery("from " + objType.getName()).list();

		for (JournalPracticeStatus journalPracticeStatus : journalPracticeStatuses) {
			journalPracticeStatus.getPractice();
			journalPracticeStatus.getPracticeStatus();
			journalPracticeStatus.getStudent();
		}

		session.close();
		return journalPracticeStatuses;
	}

}
